package com.fahai.web.service.impl;/**
 * Created by Lilinjun on 17/5/22.
 */

import com.fahai.common.IConfType;
import com.fahai.common.PageVo;
import com.fahai.web.dao.AllConfigDao;
import com.fahai.web.entity.AllConfig;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 全局变量服务类
 *
 * @author
 * @create 2017-05-22 下午5:23
 **/
@Service
@Transactional(rollbackFor = DataAccessException.class)
public class AllConfigServiceImpl implements com.fahai.web.service.AllConfigService {
    @Autowired
    AllConfigDao dao;

    /**
     * 激活运营规则
     *
     * @param allConfig
     */
    @Override
    public void activeConfig(AllConfig allConfig) {
        Map<String, Object> map = new HashMap<String, Object>();
        map.put("allId", allConfig.getAllId());
        dao.activeConfig(map);
    }




    /**
     * 装配DAO
     *
     * @param dao
     */
    @Autowired
    public AllConfigServiceImpl(AllConfigDao dao) {
        this.dao = dao;
    }

    /**
     * 编辑运营规则
     * 目前2017-06-15 17:42:58 一共有3中类型
     * 通话频次设定类型（conf_type=20）的全局参数含有两个属性值，需要存放在conf_value字段里，采用'#'的方式进行分割。
     * 按照先后顺序，依次匹配到界面上数值与通话次数字段。
     * 保存时，从前台获取两个字段值后，用"#"拼接两个属性值。
     * 其他类型的的全局参数 按照正常的方式进行保存入库。
     *
     * @param allConfig
     */
    @Override
    public void updateAllConfig(AllConfig allConfig) {
        //处理解析#，因为有的参数还有多个值 通过#的方式进行分割
        if (null != allConfig.getBak()) {
            allConfig.setConfValue(allConfig.getConfValue() + "#" + allConfig.getBak());
        }
        allConfig.setBak(null);
        allConfig.setRemark(allConfig.getRemark());
        allConfig.setUpdateTime(new Date());
        dao.updateByPrimaryKeySelective(allConfig);
    }

    /**
     * 保存运营规则信息
     *
     * @param allConfig
     */
    @Override
    public void insertAllConfig(AllConfig allConfig) {
        dao.insertUseGeneratedKeys(allConfig);
    }

    /**
     * 停用运营规则
     *
     * @param allConfig
     */
    @Override
    public void stopConfig(AllConfig allConfig) {
        Map<String, Object> map = new HashMap<String, Object>();
        map.put("allId", allConfig.getAllId());
        dao.stopConfig(map);

    }




    @Override
    public PageVo getAllConfigList(AllConfig allConfig, PageVo pageVo) {
        Map<String, Object> map = new HashMap<String, Object>();
        // Page<UserInfo> page = PageHelper.startPage(pageVo.getPageNum(), pageVo.getPageSize());
        map.put("confType",allConfig.getConfType());
        map.put("confEname",allConfig.getConfEname());
        List<AllConfig> allConfigs = dao.getAllConfigsWithType(map);
        if(null!=allConfig.getConfType()){
            allConfigs=parseMultiValue(allConfigs,allConfig.getConfType());
        }
        pageVo.setResult(allConfigs);
        return pageVo;
    }

    private List<AllConfig> parseMultiValue(List<AllConfig> allConfigs, int  type){
        if(type== IConfType.getConfType_thpc){
            for (AllConfig vo : allConfigs
                    ) {
                if (null != vo.getConfValue()) {
                    vo.setBak(vo.getConfValue().indexOf("#") != -1 ? vo.getConfValue().substring(vo.getConfValue().indexOf("#") + 1, vo.getConfValue().length()) : null);
                    vo.setConfValue(vo.getConfValue().replace("#" + vo.getBak(), ""));
                } else {
                    vo.setBak(null);
                }
            }
            return allConfigs;
        }else{

            return allConfigs;
        }
    }
}
